package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;

/**
 * 预订规则，用于记录与预订相关的规则和限制对象 booking_rule
 *
 * @author ruoyi
 * @date 2025-05-13
 */
@ApiModel("预订规则，用于记录与预订相关的规则和限制对象")
@Data
public class BookingRule extends AbdulBaseEntity {
    private static final long serialVersionUID = 1L;

    /** 预订规则的唯一标识符 */
    @ApiModelProperty("预订规则的唯一标识符")
    private Long id;

    /** 自助预订时段开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("自助预订时段开始时间")
    @Excel(name = "自助预订时段开始时间")
    private Date selfServiceStartTime;

    /** 自助预订时段结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("自助预订时段结束时间")
    @Excel(name = "自助预订时段结束时间")
    private Date selfServiceEndTime;

    /** 有人服务时段开始时间  */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("有人服务时段开始时间")
    @Excel(name = "有人服务时段开始时间")
    private Date staffServiceStartTime;

    /** 有人服务时段结束时间  */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("有人服务时段结束时间")
    @Excel(name = "有人服务时段结束时间")
    private Date staffServiceEndTime;

    /** 可预订天数限制，表示用户可以提前多少天进行预订 */
    @ApiModelProperty("可预订天数限制，表示用户可以提前多少天进行预订")
    @Excel(name = "可预订天数限制，表示用户可以提前多少天进行预订")
    private Long maxBookableDays;

    /** 最大提前预订分钟数，表示用户可以提前多少分钟进行预订 */
    @ApiModelProperty("最大提前预订分钟数，表示用户可以提前多少分钟进行预订")
    @Excel(name = "最大提前预订分钟数，表示用户可以提前多少分钟进行预订")
    private Long maxAdvanceBookingMinutes;

    /** 最低预订分钟数，表示用户每次预订的最短时长 */
    @ApiModelProperty("最低预订分钟数，表示用户每次预订的最短时长")
    @Excel(name = "最低预订分钟数，表示用户每次预订的最短时长")
    private Long minBookingMinutes;

    /** 消费中可预订,表示在消费过程中是否允许预订 */
    @ApiModelProperty("消费中可预订,表示在消费过程中是否允许预订")
    @Excel(name = "消费中可预订,表示在消费过程中是否允许预订")
    private Integer bookableDuringConsumption;

    /** 维护中可预订，布尔值，表示在维护状态中是否允许预订 */
    @ApiModelProperty("维护中可预订，布尔值，表示在维护状态中是否允许预订")
    @Excel(name = "维护中可预订，布尔值，表示在维护状态中是否允许预订")
    private Integer bookableDuringMaintenance;

    /** 待清台可预订，表示在待清台状态中是否允许预订 */
    @ApiModelProperty("待清台可预订，表示在待清台状态中是否允许预订")
    @Excel(name = "待清台可预订，表示在待清台状态中是否允许预订")
    private Integer bookableDuringPendingClear;

    /** 清台中可预订用户，表示在清台过程中是否允许预订 */
    @ApiModelProperty("清台中可预订用户，表示在清台过程中是否允许预订")
    @Excel(name = "清台中可预订用户，表示在清台过程中是否允许预订")
    private Integer bookableDuringClearing;

    /** 手机号 */
    @ApiModelProperty("手机号")
    @Excel(name = "手机号")
    private String phone;
}